Wireless communication systems are widely deployed to provide various types of communications such as voice and data. Wireless communication systems wirelessly transmit voice and data over Radio Frequency (RF) carrier waves. To overcome data corruption that can occur during RF transmission, the data, before being RF transmitted is encoded. One common coding technique is knows as turbo-encoding.
A turbo encoder typically comprises a pair of convolutional encoders, one of which receives data bits (i.e. systematic bits) while the other (referred to as interleaved convolutional encoder) receives interleaved data bits. The data bits are shuffled (interleaved) in accordance with a specified interleaving scheme.
The turbo encoder outputs a data bit, a parity bit and an interleaved parity bit per each data bit it receives. The parity bit is outputted from the non-interleaved convolutional encoder while the interleaved parity bit is outputted from the interleaved convolutional encoder. The bits that are outputted from the turbo encoder are also known as encoded data bits.
Turbo encoders usually encode one block of data after the other. One known method of turbo-encoding is called “tail biting”. Tail biting means that an initial state of the turbo encoder (the state of the turbo encoder before encoding a block of data) equals the final state of the encoder (the state of the turbo encoder after encoding the entire block of data).
The content of each block of data affects the state of the turbo encoder and not all possible initial states of a turbo encoder facilitate tail biting. There is a need to calculate, before the encoding process starts, a state (so called last state) of the encoder and from that last state to find an initial state of the turbo encoder that will facilitate tail biting.
The state of the turbo encoder comprises a state of an interleaved convolutional encoder of the turbo encoder. The calculation of the last state of the interleaved convolutional encoder does not start until after the entire block of data is received and interleaved—as the interleaver first receives the entire block of data and only then interleaves the block of data to provide interleaved data bits.